<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<!-- 

使用for...of遍历数组和对象：编写代码使用 for...of 循环遍历数组和对象
（对象需要使用自定义迭代器），并输出每个元素。

-->
<script>
    var arr = [1, 2, 3, 4, 5];
    var obj = {
        name: 'zs',
        age: 11,
        [Symbol.iterator]() {
            const self = this;
            var i = 0;
            const keys = Object.keys(self);
            return {
                next: function () {
                    if (i < keys.length) {
                        const key = keys[i++];
                        return { value: [key, self[key]], done: false }; 
                    } else {
                        return { done: true };
                    }
                }
            }
        }
    };
    // 遍历数组
    for (const value of arr) {
        console.log(value);
    }
    // 遍历对象
    for (const [key, value] of obj) {
        console.log(key, value);
    }
</script>

</html>